// 导入获取购物车api
import {AddCart, GetCart,DelCart,UpdateCart} from '@/api/mi.js'
import { Toast,Dialog} from 'vant';
export default {
    state:{
        goods: [ ]
    },
    getters:{
        // 总数量
        totalNum(state){
            var n = 0;
            state.goods.forEach(good=>{
                // 如果是选中的
                if(good.sel){
                    n+=good.num
                }
               
            })
            return n;
        },
        // 总价格
        totalPrice(state){
            var n = 0;
            state.goods.forEach(good=>{
                if(good.sel){
                    n+=good.num*good.price
                }
               
            })
            return n;
        }
    },
    mutations:{
        // 初始化购物车数据
        INIT_CART(state,data){
            // 更新购物车数据
            state.goods = data;
        }
    },
    actions:{
        // 获取
        getCart(context){
            GetCart()
            .then(res=>{
                // context相当于组件中$store
                // context.commit 调用 mutations方法
                // context.dispatch 调用 actions方法
                // context.state 状态
                // context.getters 获取器
                context.commit("INIT_CART",res.data.data)
            })
        },
        // 添加
        addCart(context,data){
            AddCart(data)
            .then(res=>{
                
                console.log(res);
                if(res.data.code==0){
                    Toast("加入购物车成功")
                    // 添加成功，重新获取获取最新的购物车数据
                    context.dispatch("getCart")
                }else{
                    Toast(res.data.msg) 
                }
            })
            .catch(err=>{
                console.log("err",err)
            })
        },
        //删除
        delCart(context,id){
            Dialog.confirm({
                title: '确认删除',
                message: '删除后不能恢复！',
              })
            .then(() => {
                DelCart(id)
                .then(res=>{
                    if(res.data.code==0){
                        Toast("删除成功");
                        context.dispatch("getCart")  
                    }
                })
            })
            .catch(() => {
                // on cancel
                Toast("删除取消")
            });
           
        },
        // 更新购物车
        updateCart(context,data){
            UpdateCart(data)
            .then(res=>{
                if(res.data.code===0){
                    context.dispatch("getCart")  
                }
            })
        }
    }
}